Advances in computer technology (e.g., microprocessor speed, memory capacity, data transfer bandwidth, software functionality, and the like) have generally contributed to increased computer application in various industries. Ever more powerful server systems, which are often configured as an array of servers, are commonly provided to service requests originating from external sources such as the World Wide Web, for example.
Transaction processing systems have led the way for many ideas in distributed computing and fault-tolerant computing. For example, transaction processing systems have introduced distributed data for reliability, availability, and performance, and fault tolerant storage and processes, in addition to contributing to a client-server model and remote procedure call for distributed computation.
More importantly, transaction processing introduced the concept of transaction ACID properties—atomicity, consistency, isolation and durability that has emerged as a unifying concept for distributed computations. Atomicity refers to a transaction's change to a state of an overall system happening all at once or not at all. Consistency refers to a transaction being a correct transformation of the system state and essentially means that the transaction is a correct program. Although transactions execute concurrently, isolation ensures that transactions appear to execute before or after another transaction because intermediate states of transactions are not visible to other transactions (e.g., locked during execution). Durability refers to once a transaction completes successfully (commits) its activities or its changes to the state become permanent and survive failures.
Many applications are internal to a business or organization. With the advent of networked computers and modems, computer systems at remote locations can now easily communicate with one another. Such enables computer system applications to be employed between remote facilities within a company. Applications can also be of particular utility in processing business transactions between different companies. Automating such processes can result in significant improvements in efficiency, not otherwise possible. However, this inter-company application of technology requires co-operation of the companies and proper interfacing of the individual company's existing computer systems.
In conventional business workflow systems, a transaction comprises a sequence of operations that change recoverable resources and data from one consistent state into another, and if a deadlock occurs (i.e., multiple actions requiring access to the same resource) before the transaction reaches normal termination, the transactions are canceled to allow the system to restart. This can be extremely costly, both in time and in resources, to a business because all transactions are halted after the deadlock, regardless of their costs. Thus, even if only a single deadlock occurs, the entire system or systems are restarted.
As explained earlier, deadlock refers to a specific condition when two or more processes are each waiting for another to release a resource, or when more than two processes are waiting for resources in a circular chain. Deadlocks do not withdraw on their own accord, and if a deadlock occurs, it must be resolved before additional transactions can be processed. In general, deadlock cycles are resolved one at a time, wherein related algorithms are recursive and yet not efficient when there are multiple connected deadlock cycles in the system. Even after a deadlock is resolved, another deadlock can occur soon afterward.
Moreover, most commercial systems implement timeout-based deadlock resolution strategy. Typically, time-out solutions do not guarantee the existence of deadlocks, and typically cannot guarantee accuracy and correctness of deadlock resolving operation.